home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Business Master (3rd Edition)
/
The Business Master (3rd Edition).iso
/
files
/
wordmisc
/
popform
/
pf.doc
< prev
next >
Wrap
Text File
|
1991-08-29
|
92KB
|
2,071 lines
TO: INTEGRA COMPUTING, 910 Cobb Place Manor Dr., Marietta, GA 30066 PF 3.0
Name __________________________________________________________
Firm Name __________________________________ Phone ________________
Address __________________________________________________________
City _________________ State ___ Zip _______ County ________
# Professionals _____ # Employees ____ Type of Practice ________________
I first heard of Integra Computing from ___________________________________
Prices and availability are subject to change without notice.
Send unregistered** copies of the following:
___ copies of TickleX at $10 ea $_____
___ copies of MT-Tracker at $15 ea $_____
___ copies of Nifty at $10 ea $_____
___ copies of RAMdesk at $10 ea $_____
___ copies of ReSearch at $10 ea $_____
___ copies of BillPower at $10 ea $_____
___ copies of BillPower Plus at $15 ea $_____
Send registered** copies of the following:
___ copies of RAMdesk at $50 [$25 w/TickleX/BillPower] $_____
___ copies of PopForm at $50 [$25 w/TickleX/BillPower/MT-Tracker]$_____
___ copies of ReSearch at $90 [+ $60 EXTRA to get 1 hr support]* $_____
___ copies of TickleX at $60 [+ $60 EXTRA to get 1 hr support]* $_____
___ copies of MT-Tracker at $90 [+ $110 EXTRA to get 2 hr support]* $_____
___ copies of BillPower at $100 [+ $110 EXTRA to get 2 hr support]* $_____
___ copies of BillPower Plus at $150 [+ $200 EXTRA to get 4 hr support]* $_____
To have programs supplied on 3.5" media, enclose $5.00 extra PER PROGRAM $_____
If you don't live in the U.S., Canada, or Mexico, please add $10.00 more $_____
TOTAL ORDER $_____
___% Sales Tax for ___________ county, if you're a GA resident $_____
Please enclose a CHECK or MONEY ORDER in US dollars -- GRAND TOTAL $_____
(purchase orders unaccompanied by actual payments won't be accepted)
I have read and agreed to all the terms of the Disclaimer found below.
_______________________________________ _________________
SIGNATURE DATE
* Telephone support will be provided if you pre-purchase it with this order
form. Such support must be used within a year. When you need assistance, you
may reach Integra Computing (404-426-5735) most weekdays from 4:00pm to 6:00pm,
Eastern Time. Because so much time is required to respond to mailed correspon-
dence, letters requesting assistance may not be answered. If you need help,
call -- don't write. But please don't even call unless you've pre-purchased
support with this order form; if you call without having prepaid for support,
each call will cost you a minimum of $15, plus $1.50 per minute.
** Unregistered software is programmed to remind you to register. Please
note that no credit will be given at the time of registration for the cost of
an unregistered copy.
BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH, RAMDESK, NIFTY AND
THEIR INSTRUCTIONS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND (INC-
LUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE). NO ORAL OR WRITTEN INFORMATION OR ADVICE PROVIDED BY INTEGRA, ITS
DEALERS, DISTRIBUTORS, AGENTS, OR EMPLOYEES SHALL CREATE A WARRANTY OF ANY
KIND REGARDING BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH, RAMDESK, OR
NIFTY, AND YOU MAY NOT RELY UPON SUCH INFORMATION OR ADVICE.
NEITHER INTEGRA NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN THE CREATION,
PRODUCTION, OR DELIVERY OF BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH,
RAMDESK, OR NIFTY SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, OR
INCIDENTAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR LOSS OF BUSI-
NESS PROFITS, BUSINESS INTERRUPTION, AND LOSS OF BUSINESS INFORMATION) AR-
ISING FROM THE USE OF (OR INABILITY TO USE) BILLPOWER, TICKLEX, MT-TRACKER,
POPFORM, RESEARCH, RAMDESK, OR NIFTY.
-- LICENSE:
BillPower, TickleX, MT-Tracker, PopForm, ReSearch, Nifty, RAMdesk, and
their documentation are copyrighted in 1985 to 1990 by R.A. Kelly. You may
use any program on as many computers as you like, as long as it is never ins-
talled with a SERIAL NUMBER (provided to you when you register as a user) on
more than one computer at a time and as long as you do not alter the program in
any way. You may distribute any of these programs to potential new users, pro-
vided that you never divulge your SERIAL NUMBER to anyone, that you charge no
fee for the program, and that you do not bundle it with (or use it as an incen-
tive to purchase or lease) any other product or service, without the written
consent of R.A. Kelly. All rights not expressly granted above are reserved in
R.A. Kelly.
-- DISCLAIMER:
BillPower, TickleX, MT-Tracker, PopForm, ReSearch, Nifty, and RAMdesk may
contain design and programming flaws. Before using ANY software on a regular
basis, try estimating the potential harm that could result from your reliance
upon it. Please don't use any of these programs unless you're willing to as-
sume the associated risks, such as billing and report inaccuracies and data
loss.
BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH, NIFTY, RAMDESK, AND
THEIR INSTRUCTIONS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND (INCLUD-
ING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE). NO ORAL OR WRITTEN INFORMATION OR ADVICE PROVIDED BY INTEGRA, ITS
DEALERS, DISTRIBUTORS, AGENTS, OR EMPLOYEES SHALL CREATE A WARRANTY OF ANY
KIND REGARDING BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH, NIFTY, OR
RAMDESK, AND YOU MAY NOT RELY UPON SUCH INFORMATION OR ADVICE. USE OF
BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH, NIFTY,OR RAMDESK IS ENTIRELY
AT YOUR OWN RISK.
NEITHER INTEGRA NOR ANYONE ELSE WHO HAS BEEN INVOLVED IN THE CREATION,
PRODUCTION, OR DELIVERY OF BILLPOWER, TICKLEX, MT-TRACKER, POPFORM, RESEARCH,
NIFTY, OR RAMDESK SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, CONSEQUENTIAL, OR
INCIDENTAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR LOSS OF BUSI-
NESS PROFITS, BUSINESS INTERRUPTION, AND LOSS OF BUSINESS INFORMATION)
ARISING FROM THE USE OF (OR INABILITY TO USE) BILLPOWER, TICKLEX, MT-TRACKER,
POPFORM, RESEARCH, NIFTY, OR RAMDESK, EVEN THOUGH INTEGRA MAY BE ADVISED THAT
SUCH DAMAGES ARE POSSIBLE.
-- AGREEMENT:
As used in this Agreement, the terms "BillPower" ,"TickleX", "MT-Tracker",
"PopForm", "ReSearch", "Nifty", and "RAMdesk", if not followed by a series or
version designation, mean any version or series of BillPower, BillPower Plus,
TickleX, MT-Tracker, PopForm, ReSearch, Nifty, or RAMdesk provided to you now
or in the future.
Your attempt to use BillPower, TickleX, MT-Tracker, PopForm, ReSearch,
Nifty, or RAMdesk constitutes your acceptance of the terms set forth in the
foregoing LICENSE and DISCLAIMER (which are incorporated into this Agreement).
Your attempt to use BillPower, TickleX, MT-Tracker, PopForm, ReSearch, Nifty,
or RAMdesk also constitutes your agreement that if you bring any legal action
relating to BillPower, TickleX, MT-Tracker, PopForm, ReSearch, Nifty, or RAM-
desk, 1) your sole remedy for the damages for which any defendant is found lia-
ble (including direct, indirect, incidental and consequential damages) will be
the recovery of whatever you paid to register as a user of the program, and 2)
you will pay all defendants' attorneys fees and other legal costs if you do
not prevail on all claims made in your pleadings.
The terms of this Agreement are governed by Georgia law. If any of this
Agreement's terms shall be held invalid to any extent, the remainder of this
Agreement shall be unaffected by such invalidity.
THE ABOVE PARAGRAPHS CONSTITUTE THE ENTIRE AGREEMENT BETWEEN YOU AND INTE-
GRA. NO ORAL OR WRITTEN COMMUNICATION, INFORMATION, OR ADVICE FROM ANY SOURCE
MAY ALTER THE AGREEMENT AS SET FORTH ABOVE.
SOME STATES DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES OR OF LIABIL-
ITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO SOME OF THE ABOVE EXCLUSIONS
AND LIMITATIONS MAY NOT APPLY TO YOU. YOU MAY HAVE OTHER RIGHTS WHICH MAY
VARY FROM STATE TO STATE.
POPFORM
(ver 3.0)
TABLE OF CONTENTS
INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
USING POPFORM . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
FORMS OVERVIEW . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
THE TILDE CODES. . . . . . . . . . . . . . . . . . . . . . . . . . . 12
PUTTING IT ALL TOGETHER . . . . . . . . . . . . . . . . . . . . . . 15
FOR PROGRAMMERS ONLY . . . . . . . . . . . . . . . . . . . . . . . . 26
PREPARING LONG FORMS . . . . . . . . . . . . . . . . . . . . . . . . 30
COMMON ERRORS . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
CUSTOMIZING POPFORM . . . . . . . . . . . . . . . . . . . . . . . . 32
POPFORM
INSTRUCTIONS
If you're using an unregistered copy of the program,
it will begin to beep at you in several weeks, reminding
you that it's time to register. Don't worry -- no data
will be destroyed, and you'll always be able to use the
program, despite the fact that you delay registering.
PopForm is a ram-resident program that can be called up from
within nearly any application, grab information from the screen, and
merge it into a form that's being sent either to a printer or to a
disk file.
PopForm's far more than just the perfect label/envelope printing
tool. You see, unlike the typical single-purpose label or envelope
printer, PopForm is actually programmable. It can execute subrou-
tines, perform comparisons and conditional procedures, and much, much
more. It'll even do simple page formatting, including margins all
around, word wrap, page numbers, and one-line headers and footers.
With this program, you can prepare forms of nearly ANY complex-
ity, as long as the information to be plugged into them can be found
on your computer's screen. And, of course, provided that you're wil-
ling to grasp and implement some basic programming concepts. If you
have simple needs, you'll find PopForm a simple dream-come-true. But
it's nice to know that it also has the power to do heavy-duty chores,
if you'll just take the time to do some programming and experimenting.
Since PopForm can deal with numerical and string variables, it it
can also be useful as you just browse through a database. When you
come to a screen containing information you'd like to record, just
call up PopForm and select a "form" you've prepared that pulls sel-
ected data from the screen and sends it to a disk file, along with the
running total for some important item. When you've finished your
browsing, you can either print the disk file or edit it with your word
processor.
INTRODUCTION
All modern word processors have the ability to prepare forms.
They can also automate the preparation of these forms through the use
of merge-printing. For instance, you can have your word processor
read a list of addresses while it's printing a "blank" mailing label.
As it does so, it will merge the address information into the blank
form, resulting in a printed label containing an address.
This merge-printing function is a tremendous time saver, but it
INTRODUCTION 4
is useful only if the blank form and the information to be merged are
both accessible by your word processor. And, of course, your word
processor's merge-printing function is available only if you're using
the word processor.
But what if it's your data base (or some other program), not your
word processor, that contains the information you want merged into a
form? Wouldn't it be nice if you could merge any information shown on
your screen into forms that you can access on a pop-up basis?
That's exactly what PopForm does. It's a memory-resident program
that will read any industry-standard ASCII file and send it to your
printer, no matter what database, spreadsheet, word processor, etc.,
you may be using at the time. And if the file being printed contains
appropriate coding, PopForm will pick information right off your
screen and merge it into the stream of data going to your printer.
Hence, with PopForm, your SCREEN, not a disk file, provides the infor-
mation be merged into the form being printed.
Let's say you have a canned letter that you'd like to send to
a few of the hundreds of people whose vital information is kept in a
data base file. Just enter the data base and conduct a search for the
records you think you may want. As each person's record comes to the
screen, you can decide whether you want to send the canned letter to
him. If so, press PopForm's hotkey, make sure that the correct form
(the canned letter) is being accessed, and print it. If you'd
also/instead like to print a mailing label or a check, just select the
appropriate form and merge-print it as well. And if you have differ-
ent pre-printed forms already loaded into different printers, you can
actually have PopForm automatically send each form it prepares to the
proper printer.
Let's assume that you're using BillPower Plus, Integra Comput-
ing's time/billing/bookkeeping program. It includes a "People" module
in which you can store thousands of names, addresses, birthdays, phone
numbers, and lots of miscellaneous information. Every person's data
screen has a similar layout: all the headings are the same, but the
actual data differs from person to person. Because each record's
screen layout is predictable, you could easily write any number of
forms to be used with the data contained in the BillPower's "People"
module. While a single record is being displayed, you could prepare a
canned letter, a mailing label/envelope, and/or any other form you
desire.
In order to get you started, as well as to provide examples which
you can study, PopForm is accompanied by several forms, among which
are:
a very simple form that demonstrates the program's
basic principles (LABEL.FRM);
a somewhat more complex form that produces envelopes
on HP Laser printers (HP-ENV.FRM);
a rather complex airbill form that demonstrates the use
INTRODUCTION 5
of "IF" and "GOTO" conditional processing (FEDEX.FRM);
a form that demonstrates PF's ability to do page format-
ting (WILL.FRM);
a form that demonstrates PF's use in keeping up with
running totals as you browse through a data base
(TOTALS.FRM).
You'll also find a simple text editor (FORMED.EXE) that may be useful
in designing simple forms.
INTRODUCTION 6
USING POPFORM
You should install PopForm into its own POPFORM directory on your
hard disk.
To use the program, you should first log into the directory con-
taining PopForm. The reason you need to be in this directory is that
PopForm will always look to the directory from which it's installed
when it needs to find its forms. No matter what directory you may
subsequently be logged into when you're running other applications,
PopForm will always look for its forms in the subdirectory from which
it was loaded.
Once you're in the correct directory, load the program by typing
"pf" at the DOS prompt. Once the program is in memory, you'll be re-
turned to the DOS prompt. By default, the program saves memory by
swapping itself to and from disk when you call it up and escape from
it. This takes a few seconds every time you press the hotkey. But if
you'd rather save time at the expense of more memory usage, you may
install the program ty typing "pf ns" at the DOS prompt. The prog-
ram's response will be instantaneous when installed in this fashion,
but it will take up about 60K of memory, as compared to about 7K when
the default disk-swapping is employed.
Once the program's installed, it may be called up from within any
application. To do so, you need simply press the hotkey (ALT-F, un-
less you customize the program to recognize another). PopForm will
then display the names of all forms available for printing. Type in
the name of one, press the Enter key, and that form will be sent to
the printer. PopForm will then disappear from the screen until you
invoke it again with the hotkey.
The next time you press the hotkey, PopForm will remember the
last form it printed. To re-print that form, just press the Enter
key. If you need to change the form, do that first, and THEN press
the Enter key.
By default, PopForm assumes that you'll be sending your form to a
printer attached to your computer's LPT1 port. If your printer is
attached to LPT2, you may press ALT-P to change the printer port.
When you do, you'll notice that the port designation in the upper-
right of the PopForm box will change. If you press ALT-P a second
time, PopForm will be set to send the form to a disk file named "PCUE"
(PrinterCUE). Pressing ALT-P a third time will tell PopForm to send
the form to a disk file named "TEXT" (you may subsequently use your
word processor to edit this file and send it to a printer). Pressing
ALT-P a fourth time completes the circle and brings you back to LPT1.
If you've been sending a series of forms to the Printer Cue
(PCUE), you may easily have that file printed just by pressing Ctrl-P.
But before you press Ctrl-P, make sure that you've informed PopForm to
stop sending its output to PCUE. It doesn't make sense to send PCUE's
USING POPFORM 7
contents to itself, so press ALT-P until the appropriate printer (LPT1
or LPT2) appears in the upper-right. THEN, press Ctrl-P to send the
contents of the printer cue to the printer.
To exit PopForm and return to your application without printing a
form, press the ESC key. To actually UNLOAD PopForm from memory (so
that it will no longer be accessible by your pressing the hotkey),
press ALT-X.
USING POPFORM 8
FORMS OVERVIEW
USING PopForm is a snap, but DESIGNING FORMS will be another mat-
ter until you become accustomed to it.
All forms used by PopForm must be located in the POPFORM direc-
tory (or whatever other directory you place PopForm into). And each
form must have the ".FRM" file name extension (eg: "label.frm", "let-
ter.frm", "check.frm").
Each form must have been prepared as an industry-standard ASCII
file. Most modern word processors can produce this type of file, but
generally not unless you specifically request it. If you don't speci-
fy an ASCII file, your word processor is likely to produce a file in
it's proprietary format, which is unlike that used by all other word
processors. If you specify an ASCII file, however, PopForm and most
other word processors will be able to read it. So study your word
processor's manual to learn how to produce ASCII files.
Just in case your word processor makes it difficult for you to
prepare ASCII files, PopForm is accompanied by a relatively simple
text editor called FORMED. It's handy for making small forms, but
you'll probably need a full-featured word processor for the big ones.
Each form will have several spots where you will want to substi-
tute information from the screen. At each such spot, you must provide
an appropriate code. As PopForm reads the form file, it will encoun-
ter these codes and merge information from the screen at those spots.
A PopForm code always BEGINS and ENDS with a tilde (~). There
are several types of codes that may be placed between the two tildes,
the most commonly used of which is the Screen Specification. When
PopForm encounters a Screen Specification, it will read the screen
positions specified and perform whatever process the tilde code dir-
ects. If the tilde code contains NOTHING BUT a Screen Specification
(that is, no other directive except, perhaps, a Write Length), PopForm
will simply send the data extracted from the screen to the printer.
If, however, the tilde code directs PopForm to do some sort of compar-
ison or mathematical operation with the the screen data, the approp-
riate operation will be performed without anything being sent to the
printer. So, if you want to send screen data to the printer, all you
have to do is to place a Screen Specification between two tildes. If
the tilde code has any other directives (other than a Write Length),
nothing will be written.
A Screen Specification is enclosed within parentheses, and it
consists of two parameters, each separated by a comma: 1) either a
keyword or a screen location, and 2) the Read Length (number of char-
acters to read from the screen). If the Read Length is specified as
zero, (or omitted altogether) PopForm will read to the end of the
FIRST WORD, regardless of its length, and then stop reading.
Examples:
FORMS OVERVIEW 9
~("Name: ",20)~ tells PopForm to find "Name: " on the
screen, read the next 20 characters, and
print them.
~("Name: ")~ tells PopForm to find "Name: " on the
screen, read the next word, and print it.
Another type of data that is frequently used is the Write Length,
which informs PopForm how many characters to write to the printer. It
may be used in conjunction with a Screen Specification or any other
tilde code that will result in something being sent to the printer.
If the Write Length is smaller than the length of the information
to be written, that information will be truncated. If the Write
Length is greater than the data length, PopForm will add extra spaces
(padding) at the end of the data. A write length of zero (or no Write
Length specification at all) will tell PopForm to write exactly as
many characters as are contained in the data to be written, no more
and no less.
A Write Length is always enclosed in square brackets. If it's
used, it should be placed within the tilde code before the the item
specified to be written, such as a Screen Specification (which, remem-
ber, is placed within parentheses, not brackets).
~[30]("Name: ",20)~ tells PopForm to find "Name: " on the
screen, read the next 20 characters,
print them, and then add another 10
blank spaces.
Take a look at the LABEL.FRM file provided with PopForm. It's a
very simple example of the use of screen specifications.
- Screen layouts
Of course, Screen Specifications are useful only if you know the
screen arrangement with which a particular form will be used. There-
fore, each form you prepare with your word processor will assume a
certain screen layout. You can have a separate form for each type of
layout you anticipate being displayed at the time the form is needed.
Similarly, you can have many types of forms set up for each individual
layout.
Some sample forms are provided with PopForm. Also provided is a
file called TESTDATA. Each of the provided forms (except the will) is
designed to work with TESTDATA, which may be viewed as a sample data
base screen. If you'll look at TESTDATA, you'll see that information
is arranged haphazardly on the screen. This unusual layout is pro-
vided just to demonstrate that PopForm will find data, no matter where
it has been strewn onto the screen. If you're likely to use PopForm
with a number of different main applications, you'll appreciate the
fact that PopForm will find the data you want, no matter where it's
FORMS OVERVIEW 10
displayed.
Now look at CHECK.FRM. This is a check that has been designed
for use with Epson-compatible printers. One of that file's codes is
~[25]("payee: ",25)~
This tilde code contains both a Write Length and a Screen Specif-
ication. It tells PopForm to look for the character sequence,
"payee: ", on the screen. When it finds that sequence, PopForm should
then read the NEXT 25 characters and then print 25 (all of them, in
this case) of those characters before reading and printing anything
else from the CHECK.FRM file. If your screen happens to be displaying
anything (such as TESTDATA) with the sequence, "payee: ", the approp-
riate substitution will take place.
Remember, unlike other types of data that can be placed within
tilde codes, Screen Specifications are enclosed in parentheses, and
Write Lengths are enclosed within square brackets. Examples:
~"payee: ",25~ NO - Screen Specifications must be in parens
~("payee: ",10)~ ok - looks for "payee: ", reads 10 charac-
ters, writes all 10, since no Write
Length given
~15("payee: ",25)~ NO - Write Lengths must be in brackets
~[9]("payee: ",25)~ ok - reads 25 characters, writes 9 of them
FORMS OVERVIEW 11
THE TILDE CODES
Though the Screen Specifications and Write Lengths covered in the
last section are the codes you will most frequently use, there are
other things you may specify with tilde codes. Each will be described
in detail later, but here's a brief explanation of each:
DATE Read today's date from the computer's memory, not
the screen, and send it to the printer.
WEEKDAY Read today's weekday from the computer's memory,
not the screen, and send it to the printer.
TIME Read the current time from the computer's memory,
not the screen, and send it to the printer.
NEWPAGE Tells PopForm to send a form feed instruction to the
printer, so that a new sheet of paper will be fed.
MARGINS t,l,b,r Sets each printed page's top, left, bottom, and right
margins to t,l,b, and r, respectively.
HD x,y PopForm will place header y at the top of each page
it prints and then print x blank lines.
FT x,y PopForm will place footer y at the bottom of each page
it prints and ensure that there are x blank lines
between it and the preceding text.
WRAP ON Turns word wrap on. When ON, Popform will ignore all
carriage returns in the form being printed and
determine for itself when to issue a carriage return.
WRAP OFF Turn word wrap off.
< ~<~ forces a carriage return and line feed, whether
or not word wrap is on.
+ If ~+~ is the last thing on a line, it tells PopForm
to join that line with the following one. No line
feed or carriage return will be sent to the printer
between these two lines.
\ If ~\~ is the last thing on a line, it tells Popform
that the following line is to overprint the current
one. Therefore, a carriage return, but no line
feed, will be sent to the printer between the two
lines.
CENTER x Tells PopForm to center all items picked from the
screen. Each item will be centered on column x.
Centering will continue until a CENTER OFF code
is encountered.
CENTER OFF Turns off centering.
PRINTCODE x Send printer control decimal code x to the printer.
C-cc Go to column cc on the row where the cursor is
currently located and start reading (cc must be
2 digits). Whatever is found there will be printed.
R-rr Go to row rr on the screen and start reading at
the column where the cursor is presently located
(rr must be 2 digits). Whatever is found there
will be printed.
RC-rrcc Go to row rr and column cc and start reading (rr
and cc must each be 2-digit numbers). Whatever is
THE TILDE CODES 12
found there will be printed.
WRITELN x Display message x in PopForm's box. If nothing is
already displayed, the message will be located on
the top line; otherwise, it will be put onto the
second line. Only two lines can be displayed at
one time.
INPUT x Prompt the user for keyboard input by displaying
message x. Whatever the user keys in will be
sent to the printer, except for a carriage return.
BLOCK Allow the user to "block off" a portion of the current
screen and send that block's text to the printer.
NEWSCREEN x Tells PopForm to display message x, wait for you to
press a key, and then temporarily exit. This allows
you to call up another screen of data before for
the current form to use. When you re-enter PopForm,
it will pick up where it had left off just before
exiting. If x is missing, PopForm will exit without
displaying a message.
LABEL x Marks a position within the file. "x" is the
number or short word you wish to assign to the
position.
GOTO x Stop printing and skip to the position in the form
defined by label x. Then, begin printing again.
GOSUB x Like GOTO, but will cause PopForm to automatically
RETURN pick up where it left off before performing the
subroutine beginning at label x and ending with a
RETURN command.
DO Defines a DO loop that contains everything between
UNTIL COUNT x the "DO" and "UNTIL COUNT x" statements. The
DO loop will be repeated x times.
NUMx PopForm keeps 9 numerical variables to which you
may assign values. They are called NUM1...NUM9.
Each always starts with a value of zero when a new
form is being prepared, but you may alter them
through addition, subtraction, multiplication,
division, and clearing ( +, -, *, /, cc ).
WRDx PopForm keeps 9 alphanumeric variables to which you
may assign characters strings. They are called
WRD1...WRD9. Each always starts out blank when a
new form is being prepared, but you may alter them
through addition, subtraction, and clearing
( +, -, cc ).
ESC This is the character that results when the ESC key
is pressed. It may be used when making comparisons
in an IF statement (eg: IF the ESC key is pressed,
then do so-and-so).
DECIMALS x Defines the precision with which each NUM variable will
be printed. x is the number of decimal places
desired.
SENDTO x Send the form to a disk file named x, instead of to
your primary printer. If you want to send the form
to another PRINTER (not a file), x should be "LPT1",
THE TILDE CODES 13
"LPT2", "LPT3", or "LPT4".
FILE x Go to disk file x and print it. The file must be
located in the same directory as PopForm's other
form files. Be sure to specify a full file name,
including the extension.
IF x > If number x is greater than the number defined by the
following keyword (or screen coordinates), then
execute the next tilde code sequence. Otherwise,
DO NOT execute the next tilde code sequence.
IF x < If number x is less than the number defined by the
following keyword (or screen coordinates), then
execute the next tilde code sequence. Otherwise,
DO NOT execute the next tilde code sequence.
IF x = If phrase x is contained within the phrase defined by
the following keyword (or screen coordinates), then
execute the next tilde code sequence. OR, if
number x is the equivalent of the number defined by
the following keyword (or screen coordinates), then
execute next tilde code.
IF x <> If phrase x is not contained within the phrase defined
by the following keyword (or screen coordinates),
then execute the next tilde code sequence. OR, if
number x is not the equivalent of the number defined
by the following keyword (or screen coordinates),
then execute next tilde code.
IF x ^ a,b,c... If number x equals number a, b, or c, etc., then
execute next tilde code.
IF x | a,b,c... If number x does not equal number a, b, or c, etc.,
then execute next tilde code.
{ x } A tilde code containing nothing but comments enclosed
within curly brackets will be ignored by PopForm.
You may use this feature to document your forms,
without having to worry about your comments' being
printed.
THE TILDE CODES 14
PUTTING IT ALL TOGETHER
- In General
A simple form can be slapped together in no time. A mailing
label is a good example. As your needs become more complex, however,
you'll find yourself using PopForm's programming features to flash
prompts onto the screen, compare screen data with other information,
perform subroutines, etc. A complex form could conceivably take many
hours (even days) to develop. Telling PopForm when to print what, and
on which line to print it may be tricky. But it CAN be done with some
perseverance. So please study the remainder of this manual and de-
velop some practice forms, so that you can experiment with each of
PopForm's specialized codes. Good luck.
- Keywords and Screen Locations
If the data you want to insert in your form always follows a par-
ticular keyword, screen coordinates aren't important; PopForm will
find the data, no matter where it may appear on the screen if you
supply it with the keyword (eg: "Street: ").
PopForm is not case sensitive when it's scanning the screen for a
keyword you've supplied. That is, capitalization doesn't make any
difference to PopForm when it's looking for a keyword. But what it
sends to the printer will be EXACTLY what is found on the screen fol-
lowing the keyword.
An alternative to a keyword search is to specify the exact screen
coordinates where the data you want may be found. Screen coordinate
numbering begins in the upper left corner, whose coordinate is "0101"
(row 01, column 01).
Let's assume that you have your data arranged in an array (a
spreadsheet, for instance), and that there are no predictable key-
words. Wouldn't it be nice to be able to move the cursor to a speci-
fic row and merge the data on that row into your form?
The "C-cc" code does just that. The "cc" portion of the code
specifies the COLUMN (two digits, please) at which the data you want
to merge begins. The ROW is defined as that where the cursor was lo-
cated just before popping into PopForm. Take a look at RPRTCARD.FRM,
a simple report card whose data also happens to be taken from the
TESTDATA file. You'll note that the "Grade" item is on the line
following "Student". But when it prints out, you'll notice that both
items are on the same line (see the "line overwrites" discussion in a
subsequent section).
To use the RPRTCARD form, use your word processor to bring TEST-
DATA to the screen. Then cursor down to any of the lines containing
PUTTING IT ALL TOGETHER 15
student names. Pop into PopForm, select the RPRTCARD form, and press
the Enter Key. That line's data will be merged into the form. Select
another student, and try again, if you like.
The "R-rr" code works the same sort of magic for rows. Here,
the "rr" portion of the code specifies the ROW (two digits) at which
the data you want to merge begins. The COLUMN is defined as that
where the cursor was located just before popping into PopForm.
What if you want to specify an exact row and column, neither of
which depends upon cursor location? Answer: the "RC-rrcc" code.
Here, both the row ("rr") AND column ("cc") are specified, each in two
digits.
Remember, Read and Write Lengths of zero have special meanings.
A Read Length of zero normally tells PopForm that the number of char-
acters to be read is not important, and that PopForm should, instead,
read to the end of the FIRST WORD, regardless of its length. A Write
Length of zero tells PopForm to print the string of characters you
desire (such as a date found in the computer's memory, or several
words picked from the screen), no more and no less.
- Line Overwriting and Line Joining (VERY, VERY IMPORTANT!)
These two features are invaluable. Read, practice, and master
the contents of this section!
As you prepare forms with your word processor, you'll find that
estimating the proper spacing is sometimes difficult, especially if
you intend to be printing upon typeset paper.
You may find that the tilde codes you enter are so long that they
distort the appearance of the form on your screen. Assume, for ins-
tance, that the data you want printed is only 6 characters long, but
that it takes 13 characters to define it with a tilde code. In this
case, everything to the right of your code will appear 7 spaces out of
alignment. PopForm doesn't care, but you may have difficulty visual-
izing the form as you're constructing it.
You'll notice that CHECK.FRM has a few lines that have missing
border characters. Those lines are to be combined with the lines
immediately preceding or following them. How? Line Joining and Line
Overwriting. Line Overwriting allows your printer to over-print two
or more lines of data on the same physical line on the paper. Though
your screen may show 2 or three separate lines, Line Overwriting al-
lows them all to be sent to the SAME line on your printer.
Line Overwriting may be imposed upon PopForm by the placing a
~\~ code at the end of a line. When PopForm encounters ~\~ at the end
of a line, it will immediately issue a carriage return, but no line
feed, to the printer. That will cause the following line to overwrite
PUTTING IT ALL TOGETHER 16
the line containing ~\~.
When trying out complex forms that you're preparing, you'll often
find that the printout contains blank lines that you hadn't anti-
cipated. All you have to do is to place a ~\~ at the end of the line
preceding an unwanted blank. That will inform PopForm that a carriage
return, but no line feed should be issued at the end of that line.
If the form you're creating requires lines longer than 80
characters, but your word processor or text editor doesn't permit
them (as is the case with the FORMED program provided with PopForm),
you'll need to "double up" by using the ~+~ code. If ~+~ is encoun-
tered at the end of a line, PopForm will join that line with the one
immediately following it. As your form is being printed, PopForm will
send NEITHER a line feed NOR carriage return after a line ending with
~+~. Hence, the following line will be printed adjacent to (not over)
the one containing ~+~. Be sure never to use the ~+~ code in the mid-
dle of another code. Though one tilde code may immediately follow
another, PopForm does not allow codes-within-codes.
By the way, you may FORCE PopForm to issue BOTH a carriage return
AND a line feed if you place a ~<~ at the end of a line. This feature
is generally useful only if you're using Word Wrap (covered later).
NOTE:
When using your word processor to look at a disk file
created by PopForm, you may notice what appear to be many
blank lines that you hadn't "programmed". In many cases,
these may not really be blank lines at all; your word pro-
cessor may simply be displaying a blank line wherever the
file has a carriage return, even though that carriage return
MIGHT NOT be accompanied by a line feed. Don't worry. When
the file is actually printed, it'll probably look much bet-
ter. Remember that the forms you create with PopForm might
make liberal use of carriage returns without line feeds.
- Missing Data
Sometimes the data you're looking for won't be anywhere on the
screen. Look at LABEL.FRM, and you'll see that it consists of four
name and address lines. The third line instructs PopForm to look to
the screen for the sequence, "Street: ". That sequence, however,
won't be followed by anything if TESTDATA is being displayed. You
might, therefore, expect PopForm to print LABEL.FRM with a blank third
line.
But you'd probably prefer that PopForm omit the third line en-
tirely when the information being sought for inclusion thereon is mis-
sing. Well, that's exactly what the program will do in this case.
Why? Because PopForm sees that next character following the keyword
specification is "\". Whenever PopForm encounters a "\" right after a
PUTTING IT ALL TOGETHER 17
keyword or a screen coordinate, the program primes itself NOT to print
the line if it cannot find what it's been told to find on the screen.
Examples:
~("payee: ",10)~ - will send a line feed to the printer,
whether or not it finds something on the
screen immediately after "payee: "
~("payee: "\,10)~ - will send a line feed to the printer,
ONLY IF PopForm finds something on the
screen immediately after "payee: "
~(RC-0513\,10)~ - will send a line feed to the printer,
ONLY IF PopForm finds something at
row 05, column 13.
For each line skipped while printing the body of a form, an extra
line will be inserted at the end, thus ensuring correct spacing bet-
ween successive forms.
It makes sense to use "\" only when there is only one item on a
form line, that item being defined by a the tilde code containing "\".
Never use "\" if the line contains ANYTHING other than a single tilde
code sequence.
- Comments
When you want to place comments into your form, but you don't
want them to print, begin each with ~{ and end each with }~. This
will allow you to make notes in each form about why you did such and
such. Example:
~{The following lines contain the client's address}~
The line shown above will not be printed when the forms is prepared.
A comment must always be the last (if not the only) item found on a
line.
- Postponing Printing
Normally, when you access PopForm, you will want a form printed
at once. Thus, when you type in the name of a form, printing normally
begins immediately.
But it may occasionally be more convenient for you to grab data
from one screen, then another, then another (and so on), AND THEN beg-
in printing. This may be accomplished in two different ways.
One is for you to simply press ALT-P until "PCUE" (the PrintCUE)
appears in the upper right corner of PopForm's screen. If you do this
before you select a form to "print", all output will be directed, not
to the printer, but to the PrintCUE. Once you've sent your last form
PUTTING IT ALL TOGETHER 18
to the PrintCUE, press Ctrl-P to actually print all the stuff you've
been saving up.
The other way to postpone printing is for you to place the SENDTO
code into your form. Example:
~SENDTO myfile~
This goes to the "myfile" file
~SENDTO LPT3~
This goes to the printer
When PopForm encounters the top line's code, it will immediately re-
direct its output to the "myfile" file, instead of to the printer.
The next line would, therefore, be sent to "myfile". The third line,
however, directs PopForm to begin printing again (through port LPT3,
in this case).
After using the SENDTO code, PopForm will assume that, when you
press Ctrl-P, you will want to print the file specified by SENDTO, not
the standard PrintCUE.
- Multi-screen Forms
You may occasionally have forms that pull their data from two or
more screens. Therefore, PopForm needs a facility to allow you to
temporarily exit, call up another screen, and then resume processing
the form. ~NEWSCREEN x~ is the answer. It tells PopForm to display
message x, wait for you to press a key, and then temporarily exit.
After you've called up another screen of data and pressed PopForm's
hotkey, the program will pick up where it had left off just before
exiting. If x is missing, PopForm will exit without displaying a mes-
sage or waiting for you to press a key. Examples:
~NEWSCREEN~
~NEWSCREEN "Press ENTER, get new screen, and come back"~
The first line would cause PopForm to exit without displaying a
message. The second line would display the message in quotes, wait
for either the ENTER or ESC key to be pressed, and then exit. If you
pressed the ESC key, PopForm would exit without expecting you to call
up another screen; when you pressed the hotkey again, PopForm WOULD
NOT pick up where it left off. The ESC key, therefore, allows you to
break out of a repetitive cycle.
- Centering
If you want the data picked off the screen to be centered on the
printed page, you may find the ~CENTER x~ code useful. When PopForm
encounters that code, it primes itself to center ALL data picked off
the screen until it encounters a ~CENTER OFF~ code. x is the column
PUTTING IT ALL TOGETHER 19
on which the data will be centered.
- Margins
PopForm normally sends to the printer exactly what is contained
in the form being printed. If you'd like PopForm to add margins of
its own, you should use the ~MARGINS t,l,b,r~ code. t,l,b, and r are
not really margins at all. Rather, they are the top, left, bottom,
and right lines and columns at which printing will begin and end.
t is the line on which you wish to begin printing on each page.
l is the column at which you want to begin printing each line. b is
the line to which you wish to continue printing each page before a new
sheet is automatically fed. r is the approximate column to which you
wish to continue printing each line if you're using Word Wrap.
t and b must be numbers between 1 and 255. l and r should be
between 1 and the maximum number of columns your printer is set to
print, minus 5. For example, if you printer is in 80-column mode, r
must be no more than 75. Remember, r has no effect unless Word Wrap
is ON.
PopForm's defaults are: t=1, b=255, l=1, and r=255. If you des-
ignate a zero for any of these items, PopForm will assume that item to
be unimportant and reset it to its default value. When a default val-
ue is set, PopForm gives up control over that item.
- Headers and Footers
If you want each page to have a header or footer, use the
~HD x,y~ or ~FT x,y~ code. y is the header or footer you want printed
at the top or bottom of each page, and x is the minimum number of
blank lines you need between the header of footer and the rest of the
text on the page. If you want a page number printed within the header
of footer, use the # character. The maximum number of characters
allowed in a header or footer is 74. Example:
~FT 3,Page #~
This will cause PopForm to place a footer at the bottom of each page,
three lines below the main text that's printed. If the page being
printed were page 21, the footer would say, "Page 21".
- Word Wrap
Sometimes, the information to be grabbed from the screen and
placed into the form being printed will not be of a predictable
length. That might make creating a form difficult, since you may not
know how much space to allocate to variable-length data.
PUTTING IT ALL TOGETHER 20
Word wrap may help you here. When it's turned on, PopForm will
completely ignore all line feeds contained in the form. Instead,
PopForm will decide for itself when it needs to skip down to the
next line. In order for this to work, you should place a ~MARGINS
t,l,b,r~ code just before turning on Word Wrap with the ~WRAP ON~
code. If you don't, PopForm will consider the left margin to be 1 and
the right one to be 255.
To turn Word Wrap off, place a ~WRAP OFF~ code into the form at
the appropriate place. If you want to change margins at that point,
you should place a ~MARGINS t,l,b,r~ code right after it.
Word Wrap's operation is fairly straightforward. When the line
that PopForm is printing comes within 9 characters of the right margin
you've designated, it begins looking for a blank space or hyphen. As
soon as one is encountered, PopForm sends a carriage return and line
feed to the printer. If no blank space or hyphen is encountered be-
fore the line is 5 characters LONGER than the right margin you speci-
fied, PopForm will arbitrarily break the word and insert a hyphen.
Therefore, PopForm may occasionally break long words (>14 characters)
at awkward points. So, don't use big words too often in the forms
that PopForm will print.
Remember, PopForm ignores all line feeds contained in the form
it's printing under Word Wrap's control. So how can you FORCE PopForm
to issue a line feed and carriage return, despite the fact that Word
Wrap is on? Answer: the ~<~ code. Just place a ~<~ wherever you
want. For example, if you want a blank line between paragraphs, each
paragraph should be preceded by two ~<~ codes. Take a look at
LETTER.FRM to see how these codes are used.
- Printer Codes
There may be times when you need to switch from 1/6" to 1/8"
spacing, and back. You may need to change fonts in the middle of a
page, or even in mid-line. Or you may occasionally need to underline
what's printed. In order to handle these changes, you'll have to
utilize PopForm's special printer control tilde codes. And, of
course, you'll also have to be familiar with the decimal code se-
quences recognized by your printer.
If you want to place printer control codes into your forms, enter
each as a series of 3-digit numbers. Each such sequence must begin
with "~PRINTCODE ", and end it with a tilde. Assume that the con-
trol code you want to send your printer is "27 69" (ESC E). To send
that code, you should actually place into your form this character
sequence:
~PRINTCODE 027069~
PUTTING IT ALL TOGETHER 21
Note that "027069" is used, not "2769", "27 69" or "27,69". Use se-
quences consisting of three-digit numbers only. See CHECK.FRM for an
example of this code sequence. The control code sent by CHECK.FRM is
designed to place an Epson-compatible printer into the proper mode to
print IBM graphic characters.
- Graphics
You may occasionally need to place graphics symbols into your
form. Though this may be an unfamiliar chore, you'll find your word
processor fully capable of handling it. The trick is to figure out
how, so dig out that manual and look.
Some word processors will display graphics symbols as odd-looking
characters. Don't worry, when they're printed out, they'll look just
fine -- assuming, of course, that your printer has been placed into its
graphics printing mode. Some printers can't handle graphics at all.
Some will print graphics in their default modes. And others, like the
Epson-compatibles, are capable of graphics, but need to be given the
proper command to go into that mode. That's why CHECK.FRM's first
line contains a printer control code sequence to place Epson-compat-
ible printers into graphics mode.
- Date, Day of Week, Time
If your form contains ~DATE~, ~WEEKDAY~, or ~TIME~, the compu-
ter's current date, day of the week, or time will be be substituted at
the appropriate spot on the form as it prints.
- Keeping up with Totals
PopForm will print any number you wish, whether it's contained in
the form being printed or on the screen. But what if you need the
program to keep tabs on running totals that accumulate during the
processing of many screens'-worth of data? That's what the NUMx
variables are for. There are nine of them, NUM1...NUM9. They are all
set to zero with each new form that you prepare. From that starting
point, each can be adjusted as you wish by performing mathematical
operations on it. And each can be printed easily. Here are some
examples:
~NUM1+10~ adds 10 to NUM1
~NUM2*3~ multiplies NUM2 by 3
~NUM8/4~ divides NUM8 by 4
~NUM8-NUM4~ subtracts NUM4 from NUM8 and keeps the
result in NUM8
~NUM5~ prints NUM5
~NUM5CC~ clears NUM5 (reduces it to zero)
PUTTING IT ALL TOGETHER 22
What about ~NUM5=90~? That won't work! To give NUM5 a value of 90,
you should use two operations: ~NUM5CC~~NUM5+90~. The first reduces
NUM5 to zero, and the next adds 90 to it.
If no mathematical operation is designated, the tilde code con-
taining a NUMx variable tells PopForm to simply print the variable;
otherwise, PopForm is being told to perform an operation. When per-
forming mathematical operations the first operator must always be the
NUMx variable.
The precision with which NUMx variables will be printed may be
set with the DECIMALS code. Examples
~DECIMALS 3~ causes PopForm to NUMx variables to 3
decimal places
~DECIMALS 0~ no decimal places will be printed.
PopForm's default is DECIMALS 2.
- Alphanumeric variables
PopForm will print any alphanumeric string you wish, whether it's
contained in the form being printed or on the screen. But what if you
need the program to remember a particular word or phrase and manipu-
late it later. That's what the WRDx variables are for. There are
nine of them, WRD1...WRD9. They all start out blank when you begin
preparing a form. From that starting point, each can be adjusted as
you wish by performing basic operations on it. And each can be prin-
ted easily. Here are some examples:
~WRD1+"hello"~ adds "hello" at the end of WRD1
~WRD1-"hello"~ deletes "hello" from WRD1
~WRD5~ prints WRD5
~WRD5CC~ clears WRD5 (makes WRD5 blank)
What about ~WRD5="hello"~? That won't work! To make WRD5 equal to
"hello", you should use two operations: ~WRD5CC~~WRD5+"hello"~. The
first makes WRD5 blank, and the next adds "hello" to it.
If no operation is designated, the tilde code containing a WRDx
variable tells PopForm to simply print the variable; otherwise, Pop-
Form is being told to perform an operation. When performing opera-
tions the first operator must always be the WRDx variable.
- Feeding a new sheet of paper
Whenever PopForm encounters the code, ~NEWPAGE~, it will send
your printer the form feed command. If you want a new page to be fed
only if the last line printed is within x lines of the bottom "margin"
(see the Margins section above), the code should be, ~NEWPAGE x~,
PUTTING IT ALL TOGETHER 23
where x is a number.
- Pausing for keyboard entry
If, in the middle of a form, you want PopForm to ask you
something, use the INPUT code. Whatever you enter at the keyboard
will be placed into the printout. Consider the a form consisting of
one line:
~TIME~, ~DATE~ ~INPUT "Your Name: "~
In this example, PopForm would print the computer's time and date.
Then, it would print several blank spaces, pause, and display the
phrase, "Your Name: ", on the screen. When you entered your name,
PopForm would print it at the point at which it had just paused. If
the command had been ~[20]INPUT "Your Name: "~, PopForm would have
printed the first 20 characters of your name (if you name were fewer
than 20 characters, PopForm would have padded it with spaces).
The phrase you specify with the INPUT code will be displayed on
the third line of the PopForm window. If a one-line phrase isn't
enough, you should use the ~WRITELN x~ code just before INPUT.
WRITELN will display phrase x on the first line of the window, unless
that line has already been filled by a previous WRITELN instruction
(in which case phrase x will be displayed on the second line). By
placing two WRITELN codes just before an INPUT code, you can display a
three-line prompt.
- Blocking off text
If you want the ability to highlight a certain block off text on
the screen and send it to the printer, use the ~BLOCK~ code. When
PopForm encounters that code, it will place a flashing block-type cur-
sor at the top-left corner of the screen. Use the arrow keys to move
the cursor to the point that you wish to designate as the top-left
corner of the block to be printed and press the space bar. Then, move
to the bottom-right corner of the block. As you move, you'll notice
that the block is highlighted. Hitting the Enter key will cause the
highlighted text to be sent to the printer.
If you want the text that's printed to be lined up at a certain
left margin, be sure to put a ~MARGINS code (see the Margins section)
just before the ~BLOCK code. Then, reset the margins by placing an-
other ~MARGINS code after the ~BLOCK code. Example:
~MARGINS=1,10,255,255~ sets default margins, except left margin
~BLOCK~
~MARGINS=1,1,255,255~ sets default margins all around
PUTTING IT ALL TOGETHER 24
- Printing another file
When PopForm encounters the code, ~FILE x~, it will cease
printing the current form and begin printing file x. Example:
~FILE 2d.fil~
This code would tell PopForm to immediately find the file named,
"2D.FIL" and begin printing it. If one file sends PopForm to another,
the only way to get back is to have the second file send PopForm back
to the first.
PUTTING IT ALL TOGETHER 25
FOR PROGRAMMERS ONLY
PopForm has some simplistic programming features that allow it to
react to certain conditions. Let's assume that you want the program
to read the character at a certain screen location and compare it to a
character that you define. If the characters match (or DON'T match,
if you prefer), you can have PopForm stop printing, skip down to a
certain line (identified by a LABEL), and then continue printing.
All this can be done by using IF in conjunction with the GOTO,
GOSUB..RETURN, and DO..UNTIL, tilde codes. This version of PopForm
allows GOSUBs and DO loops to be nested up to three levels deep.
You may notice that, as PopForm is sending a form to the printer,
it's pop-up box rapidly flashes on and off. What's happening is this:
When a GOTO, GOSUB, or DO statement is being executed, PopForm needs
to move to different locations in the form. As it does so, it dis-
plays a message explaining what it's doing. When it finds the proper
location, the screen is cleared, so that PopForm may read it. All
this may happen very quickly, especially if PopForm is working with
small files. If, for some reason, PopForm can't find the proper loc-
ation, it will appear to "hang up". In this case, all you normally
have to do is to press the ESC key. Then, look at the file that Pop-
Form was accessing and try to fix it's programming logic.
- Labels
Labels mark important points in your file. They can be of great
benefit when used in conjunction with the IF, GOTO, and GOSUB state-
ments. If, for instance, certain characters or values appear on your
screen, you might want PopForm to skip to a certain point in the file
and resume printing. If the screen contains other data, you might
want to skip to another section (or even to another file, altogether).
- IF statements
IF statements do comparisons. When PopForm encounters an IF
statement, it reads the string of characters between the "IF" and the
comparison expression ( =, <, >, or <> ). It makes the appropriate
comparison between that string and the string of characters following
the comparison expression. If, and only if, the comparison is true
(eg: equal, if you specify =, or not equal if you specify <>), the
NEXT FOLLOWING tilde code will be executed. If the comparison is not
true (eg: not equal if you specify =, or equal if you specify <>), the
following tilde code will be SKIPPED. Examples:
~IF 1=NUM2~~GOTO END~ Now is the time...
If NUM2=1, then PopForm will go to
the position in the form identified
by an END label (~LABEL END~). Other-
FOR PROGRAMMERS ONLY 26
wise, it will continue on to print,
" Now is the time...".
~IF "david"<>(RC-0512,5)~~GOSUB DAVE~
If the five characters located at
screen coordinates 0512 do not match
"david", then PopForm will execute the
subroutine beginning at ~LABEL DAVE~.
(see the GOSUB discussion below)
~IF ESC=NEWSCREEN "Press a Key: "~~GOTO END~
If, when the NEWSCREEN function was
displaying, "Press a Key: ", you
pressed the ESC key, PopForm would go
to the END label.
If the first string of characters to be compared is a number,
PopForm will attempt numerical comparison. If it's a date, it will
attempt to compare dates. Otherwise, it will compare words or phrases
(ignoring capitalization). PopForm recognizes dates in only three
formats, demonstrated as follows:
12 September 1992: 12 SEP 92 (day month year)
(use first 3 letters of month)
9/12/92 (month/day/year)
9-12-92 (month-day-year)
Whenever PopForm encounters an IF statement, it knows that it
needs to perform a comparison of TWO, and ONLY TWO items. If one of
the things to be compared is a known quantity (such as the ESC key, or
a particular word or number for which you're looking), that item must
appear to the LEFT of the operator ( =, <>, <, > ). The variable
against which you're comparing the known quantity must always be to
the right of the operator. If two variables are being compared, place
to the left of the operator the one that does NOT require PopForm to
pick data from the screen or from your keyboard. If both (or neither)
items are variables requiring keyboard or screen scanning, the order
is not important. Finally, any attempt to compare items that can't
logically be compared may have unpredictable results.
- GOSUB routines
When PopForm encounters ~GOSUB x~ code, it immediately finds the
position in the file identified as ~LABEL x~. It executes everything
between that point and the next ~RETURN~ code. Then, it returns to the
spot in the file just following the ~GOSUB x~ code and continues its
way through the file. Example:
This is the beginning.
~GOSUB FILLER~
FOR PROGRAMMERS ONLY 27
And now I'm done.
~GOTO END~
~LABEL FILLER~
Here's some filler material.
Now, I'll return.
~RETURN~
~LABEL END~
This sequence would cause the following to be printed:
This is the beginning.
Here's some filler material.
Now, I'll return.
And now I'm done.
- DO loops
Each DO loop maintains its own counter, which is initialized at
a value of one when the DO loop begins execution. Whenever PopForm
encounters a ~DO~ code, it will continue its work until it reaches an
~UNTIL COUNT x~ code. Then, it will increase its counter by 1 and
compare that value against x. If the counter is less than or equal to
x, PopForm will then go to ~DO~ code and begin the process again.
When the counter is finally greater than x, PopForm will break out of
the DO loop.
As DO loops are processing, you may ask PopForm to do certain
things, depending upon what the counter's current value is. Just use
an IF code to do so. Example:
~IF 2=COUNT~~GOTO TWO~...counter not equal to 2
If the counter's value is 2, PopForm
will skip immediately to the file
position identified by ~LABEL TWO~;
otherwise, it will print,"...counter
not equal to 2".
Note that COUNT must always be the SECOND value compared, never the
first. You may execute GOSUB routines that are outside the DO loop,
but all GOTO's contained within a DO loop must refer to labels that
are also within the DO loop.
- Programming Example
Programming is potentially an extremely frustrating endeavor.
You'll undoubtedly have to do a lot of trial and error work when you
work on even mildly complicated forms. But if you stick with it,
you'll be glad that you did.
Take a look at PROGRAM.FRM, FEDEX.FRM, and WILL.FRM. Copy them
FOR PROGRAMMERS ONLY 28
to into files with different names and have fun experimenting with the
copies. Also copy TESTDATA and WILLDATA to other files, so that you
can experiment with them, too. Be sure to use only an ASCII-type
editor, or you'll be wasting your time.
FOR PROGRAMMERS ONLY 29
PREPARING LONG FORMS
First, write your form without any codes. When it's done, go
through it again, this time substituting codes where appropriate.
If the form has lots of variables to be plugged in by PopForm, it
is recommended that you direct PopForm to use Word Wrap. Turn it on
and set your margins at the beginning of the form. And be sure to use
the ~<~ code wherever you REQUIRE a line feed and carriage return;
otherwise, PopForm will try to place everything into the same para-
graph.
As you write your form with your word processor, make sure that
you don't break words with hyphens at the end of lines. When PopForm
sends the form to the printer, each line containing a variable my end
up with a length different from what you had anticipated. A word
that you had originally broken with a hyphen at the end of a line may
end up in the middle of a line on the printed sheet.
PREPARING LONG FORMS 30
COMMON ERRORS
- Improper vertical spacing between lines. This is particularly a
problem when you're creating a complicated form that uses lots of
programming logic. The problem is that you aren't thinking through
the form's process well enough. There may be places where PopForm
will issue a line feed when you don't want it to. Locate those spots
and place a ~\~ at the end of the line. If PopForm ISN'T issuing
line feeds where you expect, use the ~<~ code at the end of each line
where you want the line feed.
- Improper horizontal spacing on a line. You probably haven't antici-
pated the lengths of an item that PopForm will plug into the form.
As a result, subsequent printing on that line will not be aligned
properly. Try using the ~\~ and ~+~ codes to join and overwrite
lines. Make a test file to experiment with these codes. Then, when
you understand how they work, place them into a "real" form.
- Failure to place a tilde (~) at each end of a code. This causes all
sorts of problems, as PopForm attempts to decipher everything between
two tildes.
- Omission of the word LABEL from codes intended as labels.
- Failure to end a subroutine (called by GOSUB) with a RETURN code.
- Failure to end a DO loop with an UNTIL statement.
- Failure to follow each code's recommended syntax.
COMMON ERRORS 31
CUSTOMIZING POPFORM
To customize PopForm, you need to load the program by entering
the following at the DOS prompt:
PopForm $08xxxx
where each "x" represents a letter or number, as explained in the
following sections.
Note that you need to make this special entry only once. From
then, on, PopForm may be loaded merely by entering "PopForm" at the
DOS prompt.
HOTKEY
PopForm's default hotkey is ALT-F. To change it, substitute for
the third "x" the new key you wish to use in combination with the ALT
key. Also substitute for the first two x's the scan code for that
key. You'll need to consult with a DOS manual to find a complete list
of scan codes, but here are a few:
Q=10 W=11 E=12 R=13 T=14 Y=15 U=16 I=17 O=18
P=19 A=1E S=1F D=20 F=21 G=22 H=23 J=24 K=25
L=26 Z=2C X=2D C=2E V=2F B=30 N=31 M=32
Example: To make ALT-Q the hotkey, you should enter "PopForm
$0810Q..." at the DOS prompt. Here, "Q" takes the place of the third
"x", and its scan code (10) takes the place of the first two.
To use the CTRL key in place of the ALT key, substitute "$04" for
"$08". The Left Shift key is $02, and Right Shift key is $01.
COLORS
You may designate the primary colors used by PopForm. The fore-
ground color's code substitutes for the fifth "x", while the back-
ground is contained at the sixth position. The color codes you may
use are:
0 Black 1 Blue 2 Green 3 Cyan
4 Red 5 Magenta 6 Brown 7 Light Gray
DEFAULT SETTING
PopForm's default customizing instruction is, "$0821F70":
21=the scan code of the F key used (with ALT) to invoke PopForm
F =the F key
7 =light gray (foreground color)
0 =black (background)
CUSTOMIZING POPFORM 32
THE "POWER OFFICE" LINE-UP
Each unique program in this series requires a hard disk-equipped IBM-compatible
PC with 512K of memory. The following paragraphs contain brief descriptions.
TickleX --> the ultimate in scheduling/planning/docket control
MT-Tracker --> TickleX's scheduling power, plus client management
BillPower --> time & billing with totally integrated general ledger
RAMdesk --> pop-up network message system, calculator, scheduler,
phone directory, time/work/expense log, data base
PopForm --> pop-up form printing program.
Nifty --> combination menu and pop-up help system
BILLPOWER and BILLPOWER PLUS
BillPower is a system designed to relieve you of the drudgery involved in
billing. In a nutshell, it will track the time you work on professional mat-
ters, keep up with your receipts and disbursements, and calculate the amount
owed by each client. And it will automatically prepare informative monthly
statements for all your clients. All on either a stand-alone or pop-up basis!
Engineered exclusively for the small firm, this innovative software offers
a rare combination of power and ease of use at a fair price. Unlike programs
that attempt to electronically emulate ancient manual accounting procedures,
BillPower is designed to capitalize upon the power of your computer. If you
are an "old hand" at bookkeeping, then open your mind to a real-time system
which immediately updates all balances at the time an entry is made; one that
does not require periodic batch postings or annual close-outs; one that pro-
vides a convenient method for correcting erroneous entries; a system that never
erases old data in the interest of consolidation. You'll find both BillPower
and BillPower Plus to be advanced products.
--> BillPower ($100): time, billing, & bookkeeping for firms with
up to three timekeepers -- includes bank account management,
income-expense reports, balance sheets, & several bill formats.
--> BillPower Plus ($150): time, billing, & bookkeeping for firms
with up to fifteen timekeepers -- builds upon BillPower's fea-
tures, adding the abilities to keep extensive indexed memos on
any subject, maintain notes on thousands of people, conduct con-
flict of interest checks, prepare mailing labels, and more.
BillPower can prepare several types of reports. Whenever you request
one, you will be presented with a screen listing the parameters by which you
can choose the information to be included. After you have selected the appro-
priate parameters, BillPower will hunt through its data base for informa-
tion meeting your specifications. The report may be sent to the screen, the
printer or to a disk file.
Finally, while other time and billing programs may offer "links" to exter-
nal accounting software, BillPower completely integrates its bookkeeping func-
tions into the rest of the program. In fact, BillPower Plus can simultaneously
update affected G/L accounts (as well as a client's balance and aged receiv-
ables) at the time that a disbursement or receipt is entered. This "real-time"
approach to bookkeeping, virtually unprecedented in a time and billing program,
saves you the time you would otherwise spend making duplicate G/L entries, pos-
ting transactions, and/or transferring files from one program to another. With
BillPower Plus, a SINGLE entry can handle all the updating that needs to be
done. No other program offers such a degree of integration. NONE!
TICKLEX
TickleX ($50) is a tickler/calendar program that will keep track of your
appointments and deadlines, print your itinerary at the beginning of each day
day, keep a "to-do" list, and chart the projected course of each matter you
handle. It will also schedule trips and vacations, print weekly and monthly
calendars, and beep at you when something needs doing. Stand-alone or POP-UP.
TickleX is unusual in its ability to dynamically link reminders to ap-
pointments and deadlines. Assume, for example, that you have a very important
meeting scheduled for 15 August. As with other programs, you could establish
reminders several days or weeks in advance to allow adequate preparation for
the meeting. For the purposes of this example, let's say that you have entered
a reminder one week in advance and another two weeks in advance. Now, what
happens if the meeting is moved forward one week to 22 August? Again, all tic-
kler programs would allow you to reschedule it. But TickleX will also
automatically update the two reminders, moving each one week forward in order
to maintain the original reminder intervals. Other programs would require you
to search for each reminder, delete it, and then enter it again on another
date. This TickleX exclusive is an absolute "must" for offices that have fre-
quent schedule changes.
TickleX is also unique in the way it handles multi-day events. TickleX
allows you to enter an event such as a week-long trip with just one entry.
Other programs might require a separate entry to be made for each day of the
trip. If your trip plans change, you need change only a single entry if you
have TickleX.
TickleX even has built-in project planning. No fancy charts, mind you.
Just a very simplistic means of linking and updating related events. And it's
completely integrated into the TickleX system. All project updates are auto-
matically incorporated into the same schedule that contains appointments, dead-
lines, vacations, etc.
Add to these features an attractive user interface, the ability to attach
extensive notes to each scheduled event, a number of other nice touches, and
TickleX comes up a winner. Whether you're an executive looking for a powerful
centralized personnel scheduler, a busy entrepreneur needing an easy-to-use
tickler system, or a lawyer seeking the ultimate docket control software, Tick-
leX is the program for you. There isn't a more robust scheduler available at
any price. At only $50, it's a steal.
MT-TRACKER
MT-Tracker is the ideal client tracker and scheduler. It integrates the
scheduling power of TickleX with the ability to track several thousand clients,
companies, contacts, projects, or jobs. Also included is a note-keeping module
that will link memos to the dates and clients to which they apply.
In addition to the expected name, address, phone, and contact information,
each client record has space for six full lines of miscellaneous data and nine
USER-CUSTOMIZABLE fields. And each note kept in the Note-keeping module may
contain up to seventeen lines of information.
Because MT-Tracker is an integrated system, you can easily zip from one
module to another. Assume, for instance, that you're looking at Mr. Smith's
record, and you'd like to see everything (not just one or two items) scheduled
for him during the coming month. A few keystrokes later, what you need will be
displayed on your monitor or sent to your printer. When you're finished look-
ing at the schedule, press a key to re-display Mr. Smith's record. Notes and
logged events, income, and expenses are just as easily accessed.
If you're a sales representative, consultant, personal injury lawyer, or
anyone else who needs to track clients, customers, or jobs, this is the soft-
ware you've been waiting for. Give it a try.
RAMDESK
RAMdesk ($50) is a handy "pop-up" program that contains a number of
features useful in a business environment. It will:
--> if used on a network, instantly send and receive messages;
--> schedule and review upcoming events on a pop-up basis, allowing
up to 20 alarms per day;
--> maintain a pop-up record of income, expenses, and the time spent
working on various projects;
--> provide a pop-up address and phone directory, giving you instant
access to records on hundreds of people;
--> provide a pop-up programmable calculator with a 50-line "tape";
--> allow you to establish numerous pop-up databases, such as to-do
lists, general ledger account listings, etc.
Once RAMdesk is installed (it needs 7 to 45K), it's instantly avail-
able at the touch of a hot-key combination. It may be called up from with-
in most word processors, spreadsheets, and other primary applications. If
you also happen to have BillPower and TickleX, you'll find that RAMdesk
ties in beautifully with them. Whatever appointments or deadlines you've
scheduled with RAMdesk will be automatically picked up by TickleX, while
BillPower will automatically take in the services, expenses, and receipts
you've logged with RAMdesk. TickleX and BillPower can even assimilate en-
tries made into RAMdesk by users on other computers around the office. If
the computers are networked, the assimilation will be handled automatically;
otherwise, you may use floppy disks to transfer the data between each "sate-
llite" computer and the main database on another machine.
RESEARCH
ReSearch ($50) is a program designed to help you keep track of research,
chronologies, and evidence. When you enter an item of research, you may tell
ReSearch such things as the source, page, and line number where that item can
be found. You may also enter an eleven-line summary of the item and indicate
the subject category into which the item falls.
A prime use of this program is to create printouts of research data, sor-
ted alphabetically by subject abbreviation. Another use is to keep tabs on
documents and other evidence (who sent it, who received it, its current loca-
tion, etc.). It can also be used to prepare a chronological report of a se-
quence of events which may have been entered at random into the data base.
Finally, it can scan depositions provided to you on disk in industry-standard
ASCII format and transfer verbatim text directly from the depositions to its
data base.
NIFTY
Nifty ($50) is a unique program that may be used as either a pop-up Help
system or a DOS menu. It combines an elegantly simple and attractive user in-
terface (much appreciated by the inexperienced user) with a consistent, flex-
ible means of set-up (benefiting the system integrator).
As a Help system, Nifty can, at the touch of a key or two, provide the
user with on-line assistance on any subject (assuming that appropriate help
files have been created by the person installing the system). Since the Help
system is memory-resident, it may be accessed from within nearly any other ap-
plication.
Simplicity is also the rule when Nifty is used as a Menu system. A single
keystroke can execute any program or read any file on the computer. Some menu
systems may be easier to set up, but few provide such flexible screen-creation
facilities, and none are easier to use once they're installed. With Nifty, you
may "draw" your own menus and place into them any messages you desire. You may
use either passwords or "security levels" to control access to sub-menus. You
you may even set a timer to automatically execute any program at any time.
If you know a computer novice, you know a candidate for using this handy
product. And if you understand DOS paths and file extensions, you know enough
to set up a Nifty Help or Menu system, yourself.